home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 11 / FM Towns Free Software Collection 11.iso / t_os / data / dora / doraupld.plp < prev    next >
Text File  |  1995-08-14  |  21KB  |  789 lines

  1. /*    制御ファイルの内容に従って自動アップロードする        */
  2. /*    アップロード制御ファイルの有無の判定処理    */
  3. %AUTOUPLD{
  4.     footnote({アップロード制御ファイル指定の有無を判定しています});
  5.     case    (@filechk(UP2|{doraup.ctl}),
  6.         {Yes},
  7.         {
  8.         footnote({自動アップロードを開始します});
  9.         AUTOup(UP2|{doraup.ctl});
  10.         footnote({自動アップロードを終了しました});
  11.         delfile(UP2|{doraup.bak});
  12.         renname(UP2|{doraup.ctl},{doraup.bak});
  13.         case    (@filechk(UP2|{doraup.rsv}),
  14.             {Yes},
  15.             {renname(UP2|{doraup.rsv},{doraup.ctl})}
  16.             );
  17.         });
  18.     };
  19. /*    アップ先の振り分け    */
  20. %AUTOup1{case    (@head(linebuf,{=}),
  21.         {forum},
  22.         {var    FILE    [256];
  23.         FILE:=@head(@body(linebuf,{file=},{;}),{;});
  24.         loop    ({
  25.             case    (@head(FILE,{,})<>{},
  26.                 {Yes},
  27.                 {FORUMup(
  28.                     @head(@body(linebuf,{forum=},{;}),{;}),
  29.                     @head(@body(linebuf,{mes=},{;}),{;}),
  30.                     @head(@body(linebuf,{reply=},{;}),{;}),
  31.                     @body(linebuf,{title=},{\n}),
  32.                     @UPtext(@head(FILE,{,})))
  33.                 });
  34.             FILE:=@body(FILE,{,});im(FILE<>{});
  35.             });
  36.         im({Yes});
  37.         },
  38.         {benon},
  39.         {
  40.         var    FILE    [256];
  41.         FILE:=@head(@body(linebuf,{file=},{;}),{;});
  42.         loop    ({
  43.             case(@head(FILE,{,})<>{},
  44.                 {Yes},
  45.                 {BENONup (
  46.                     @head(@body(linebuf,{benon=},{;}),{;}),
  47.                     @UPtext(@head(FILE,{,}))
  48.                     )
  49.                 });
  50.             FILE:=@body(FILE,{,});im(FILE<>{});
  51.             });
  52.         im({Yes});
  53.         },
  54.         {mail},
  55.         {
  56.         var    FILE    [256];
  57.         FILE:=@head(@body(linebuf,{file=},{;}),{;});
  58.         loop    ({
  59.             case(@head(FILE,{,})<>{},
  60.                 {Yes},
  61.                 {MAILup (
  62.                     @head(@body(linebuf,{mail=},{;}),{;}),
  63.                     @body(linebuf,{title=},{\n}),
  64.                     @UPtext(@head(FILE,{,}))
  65.                     )
  66.                 });
  67.             FILE:=@body(FILE,{,});im(FILE<>{});
  68.             });
  69.         im({Yes});
  70.         },
  71.         {bmail},
  72.         {
  73.         var    FILE    [256];
  74.         FILE:=@head(@body(linebuf,{file=},{;}),{;});
  75.         loop    ({
  76.             case    (@head(FILE,{,})<>{} && BINop<>{},
  77.                 {Yes},
  78.                 {
  79.                 BMAILup(@head(@body(linebuf,{bmail=},{;}),{;}),
  80.                     @head(@body(linebuf,{comnt=},{;}),{;}),
  81.                     @body(linebuf,{title=},{\n}),
  82.                     @UPtext(@tail(linebuf,{docfile=},{;})),
  83.                     @head(FILE,{,}))
  84.                 });
  85.             FILE:=@body(FILE,{,});
  86.             im(FILE<>{});
  87.             });
  88.         im({Yes});
  89.         },
  90.         {profile},
  91.         {PROFup(@UPtext(@tail(linebuf,{file=},{;})));im({Yes})
  92.         },
  93.         {whomemo},    /*書き込みメモをアップ */
  94.         {MEMOup(@UPtext(@tail(linebuf,{file=},{;})));im({Yes})
  95.         },
  96.         {forumlib},
  97.             {var    FILE    [256];
  98.             FILE:=@tail(linebuf,{datafile=},{;});
  99.             loop    ({case    (@head(FILE,{,})<>{},
  100.                 {Yes},
  101.                 {DLIBup(
  102.                     @tail(linebuf,{forumlib=},{;}),
  103.                     @tail(linebuf,{libno=},{;}),
  104.                     @tail(linebuf,{dataname=},{;}),
  105.                     @tail(linebuf,{keyword=},{;}),
  106.                     @tail(linebuf,{datatype=},{;}),
  107.                     @UPtext(@tail(linebuf,{docfile=},{;})),
  108.                     @UPtext(@head(FILE,{,})))
  109.                 });
  110.             FILE:=@body(FILE,{,});im(FILE<>{});
  111.             });
  112.         im({Yes});
  113.         },
  114.         {},{im({No})},    /* 空文字列なら終了 */
  115.         ,{im({Yes})}    /* それ以外なら次の行を読む */
  116.         );
  117.     };
  118. %AUTOup    {[file]
  119.     case    (@filechk(file),
  120.         {Yes},
  121.         {delfile(UP2|{doraup.rsv});
  122.         line:=0;
  123.         loop    ({
  124.             line:=line+1;
  125.             linebuf:=@read(file,line,1);
  126.             case    (@getchar(linebuf,1,5),
  127.                 {保留;},
  128.                 {write(UP2|{doraup.rsv},linebuf);im({Yes})},
  129.                 ,{AUTOup1;wait(3);
  130. /*爆裂未処理IDは予約に再登録*/    case    (IDbak<>{},
  131.                     {Yes},
  132.                     {linebuf:={benon=}|IDbak|{;file=}|
  133.                     @head(@body(linebuf,{file=},{;}),{;})|
  134.                     {;\n};
  135. /*    未処理IDをデフォルトにする    */    IDbak:={};
  136.                     write(UP2|{doraup.rsv},linebuf)},,
  137.                     );
  138.                 },
  139.                 );
  140.             });
  141.         },
  142.         {No},
  143.         {
  144.         SNDMSG({okasi_f.snd});
  145.         display({\n}|file|{制御ファイルがありません\n});
  146.         });
  147.     };
  148. /*    アップロードするテキストファイル名を決定する    */
  149. %UPtext{[fname]
  150.     case    (fname<>{},
  151.         {Yes},
  152.         {case    (@filechk(fname),
  153.             {Yes},{im(fname)},
  154.             {No},
  155.             {
  156.             SNDMSG({okasi_f.snd});
  157.             display(fname|{がありません\n});
  158.             im({});
  159.             });
  160.         },,{im({})}
  161.         )
  162.     };
  163. /*    プロンプト終了待ち共通処理        */
  164. %PROwait1{
  165.     wait    (Wtime5,
  166.         ,{60},
  167.         ,{\nNO CARRIER},{AbortOff({\nホストの回線が切れちゃった~\n})}
  168.         ,{これでよろしいですか?},{type({\n})}
  169.         );
  170.     wait(3,{send(text)},{1|},{send(text)});
  171.     type({\n//\n});
  172.     PROwait2
  173.     };
  174. %PROwait2{
  175.     loop    ({
  176.         wait(3,{im({Yes})},
  177.         {write},{WaitMK;type({W\n});im({No})},
  178.         {,?,0},{WaitMK;type({0|W\n});im({No})},
  179.         {ヘルプ 表示},{WaitMK;type({0|W\n});im({No})},
  180.         {作成終了},{WaitMK;type({0|W\n});im({No})},
  181.         {編集終了},{WaitMK;type({0|W\n});im({No})},
  182.         {おわり},{WaitMK;type({0|W\n});im({No})},
  183.         {自動署名を},
  184.         {WaitMK;type({N|0|W\n});im({No})}
  185.             );
  186.         });
  187.     loop    ({
  188.         wait    (3,{type({\n});im({Yes})},
  189.             {/N},{
  190.             case    (@filechk(docfile),
  191.                 {Yes},
  192.                 {CHeck:={No};WaitMK;type({Y\n});
  193.                 wait(Wtime2,{AbortOff({ホストがおもいよ~\n})},
  194.                     {60},{},
  195.                     {>},{type({N\n});wait(Wtime2,,{60},{})
  196.                     });
  197.                 case    (docfile,{},,,{send(docfile)});
  198.                 type({\n//\n});
  199.                 loop    ({
  200.                     wait    (3,{im({Yes})},
  201.                         {quit},
  202.                         {WaitMK;type({W\n});im({No})},
  203.                         {,?,0},
  204.                         {WaitMK;type({0|W\n});im({No})},
  205.                         {/N) >},
  206.                         {type({N|0|W\n});im({No})})
  207.                     });
  208.                 },
  209.                 {No},{type({N|0|Q\n})})
  210.             },
  211.             {ヘルプ 表示},{type({0\n})},
  212.             {>},{type({0|Q\n});
  213.                 wait(3,,{,?,O},{}
  214.                     ,{ヘルプ 表示},{}
  215.                     ,{[N]},{type({\n})});im({No})}
  216.             );
  217.         });
  218.     case(aftLOG,{Yes},{delfile(text)});
  219.     };
  220.  
  221. %PROwait3{
  222.     loop    ({
  223.         wait(3,{im({Yes})},
  224.         {[RET]},{WaitMK;type({\n});im({No})},
  225.         {,\,#,?,0},{WaitMKtype({0|0|Y\n});im({No})},
  226.         {0:quit},{WaitMK;type({0|Y\n});im({No})}
  227.             );retMAIN
  228.         });
  229.     };
  230. /*    ボードNo.を指定してメッセージをアップする    */
  231. %FORUMup{
  232.     [forum,mesno,replyto,title,text]
  233.     var    reply    [5];    reply:=replyto;
  234. case    (reply<1||reply>9999||reply={},
  235.     {No},
  236.     {
  237.     footnote(forum|{のボードNo.}|mesno|{番のNo.}|reply|{にコメントします});
  238.     case    (forum=NET,
  239.         {Yes},{type({B#}|mesno|{|R|}|reply|{|}|title);type({\n})},
  240.         {No},
  241.         {type({B#}|mesno|{|}|forum|{|R|}|reply|{|}|title);type({\n})}
  242.         );CHKcom1;
  243.     },
  244.     {Yes},
  245.     {
  246.     footnote(forum|{のボードNo.}|mesno|{番にアップロードします});
  247.     case    (forum=NET,
  248.         {Yes},{type({B#}|mesno|{|E|}|title);type({\n})},
  249.         {No},{type({B#}|mesno|{|}|forum|{|E|}|title);type({\n})}
  250.         );CHKcom1;
  251.     })};
  252. %CHKcom1{
  253.     wait(Wtime2,
  254.         ,{値が大きすぎ},{PROwait3}
  255.         ,{指定が間違って},{PROwait3}
  256.         ,{使用でき},{WaitMK;type({Q\n})}
  257.         ,{SELECT},{WaitMK;type({Q\n})}
  258.         ,{BOARD},{WaitMK;type({0|Q\n})}
  259.         ,{パスワードが違},{WaitMK;type({Q\n})}
  260.         ,{,?,0},{WaitMK;type({N\n});PROwait1}
  261.         ,{既にこのメッセージにはレスポンスが有ります},
  262.         {WaitMK;type({E|}|title);type({\n});type({Y|N\n});PROwait1}
  263.         ,{[Y]},{WaitMK;type({Y|N\n});PROwait1}
  264.         );
  265.     };
  266. /*    アクセスユーザーの確認 & 爆裂トーク攻撃    */
  267. %BENONup{
  268.     [sendto,text]
  269. /*      爆裂トーク前処理    */
  270. %preBenon{
  271.     var WhoRes[1200];
  272.     WhoRes:=@read(TEMP2|{_whotext.tmp});IDbak:={};
  273.     %ckWho{[BID,Bfil]
  274.     var n[2]; n:={0};
  275.     %p @case(@getchar(ID,1,3)={YAG},{Yes},{im({2})},{No},{im({})});
  276.     loop    ({    n:=n+1;
  277.         %a    @getline(WhoRes,n,1);
  278.         case    (a={},    
  279.             {Yes},{im({No})},,
  280.             {
  281.             case    (@strip(@getchar(a,6-p,8))
  282.                 =@strip(@getchar(BID,1,8)),
  283.                 {Yes},
  284.                 {
  285.                 footnote(BID|{を攻撃します});
  286.             sendBenon(@getchar(a,4-p,1),@getchar(a,15-p,8),Bfil)
  287.                 },
  288.                 {No},{footnote({取得データの}|n|
  289.                 {行目を確認中});im({Yes})}
  290.                 )
  291.             });
  292.         });
  293.     };
  294.     footnote(sendto|{に爆裂トーク攻撃をします});
  295.     IDlist:=sendto;
  296. loop    ({
  297.     ckWho(@head(IDlist,{,}),text);
  298.     IDlist:=@body(IDlist,{,});
  299.     case    (IDlist={},
  300.         {Yes},{im({No})},
  301.         {No},{im({Yes})}
  302.         );
  303.     });
  304.     };
  305. /*      爆裂トーク処理    */
  306. %sendBenon{[chNo,HanDle,DenPou]
  307.     flyline({1});wait(1);type({T\n});
  308.     loop    ({
  309.         wait    (3,{im({Yes})},
  310.         {チャンネルを指定して下さい}
  311.         ,{type(chNo|{\n});im({Yes})},
  312.         {書き込み中なので送れない}
  313.         ,{im({No})},
  314.         {トークモードに入りました。}
  315.         ,{    
  316.         %nowhh    @getchar(@daylong,16,2);
  317.     case    (4>=nowhh || nowhh>18,
  318.         {Yes},{type({今晩は、}|HanDle|{さん!\n})},
  319.         {No},{
  320.         case    (10>=nowhh && nowhh>4,
  321.             {Yes},{type({お早ようございます、}
  322.                 |HanDle|{さん!\n})},
  323.             {No},{case    (18>=nowhh && nowhh>10,
  324.                     {Yes},{type({今日は、}
  325.                         |HanDle|{さん!\n})}
  326.                     );
  327.                 });
  328.             });
  329.         DOWNSTOP;send(DenPou);
  330.         case(HanDLe={},{No},{type({\n爆裂トーク BY }|HanDLe|{!\n})},,);
  331.         type({\n//\n});im({Yes})
  332.         },
  333.         {トークモードを終了しました。},{im({Yes})},
  334.         {,?,0},{im({No})},
  335.         {メイン},{im({No})},
  336.         {メイン},{im({No})},
  337.         {MAIN},{im({No})}
  338.             )
  339.         });
  340.     };
  341.     
  342.     DOWNCHECK;delfile(TEMP2|{_whotext.tmp});receive(TEMP2|{_whotext.tmp});
  343.     WaitMKD;type({W\n});
  344.     footnote({現在}|NET|{-NETにアクセス中のユーザーを確認します});
  345.     preRetM;DOWNSTART;
  346.     loop    ({
  347.         wait    (3,{type({\n});im({Yes})}
  348.             ,{Ch},{footnote({OK!OK!OK!OK!OK!・・・・・});im({No})}
  349.             )
  350.         });
  351.     case    (ESCon={No},
  352.         {No},{dispoff(!DEBUG);command(CDIR2|{escctr -d}|TEMP2|{ -K}|
  353.         TEMP2|{ }|TEMP2|{_whotext.tmp});dispoff({No})
  354.         },,
  355.     );
  356.     case    (text={},
  357.         {Yes},{footnote({爆裂トーク文章が未設定です})},
  358.         {No},
  359.         {case    (@filechk(TEMP2|{_whotext.tmp})={},
  360.             {Yes},
  361.             {
  362.             display({アクセスデータの読み込みに失敗しました});
  363.             footnote({アクセスデータの読み込みに失敗しました})},
  364.             {No},{
  365.             wait(2); /* ホストとのタイムラグ調整 */
  366.             footnote({爆裂トーク処理をします});preBenon}
  367.             )
  368.         })
  369.     };
  370. /*    メールをアップする    */
  371. %MAILup{[sendto,title,text]
  372.     %MUP1    {[MID]
  373.         footnote(MID|{へメールを送ります});
  374.         type({ME|}|MID|{|}|title|{\n});
  375.         type({\n});
  376.         wait(Wtime2,,
  377.         {[Y]},{type({Y|N\n});footnote({メール送信中});
  378.             wait(Wtime2,,{60},{});
  379.             case(text,{},,,{send(text)});
  380.             type({\n//\n});
  381.             PROwait2},
  382.         {IDの指定が}
  383.             ,{wait(Wtime2,,{quit},{type({0|0|Q\n});wait(3)})},
  384.         {quit},{type({\n})})
  385.         };
  386.     %MUP2    {
  387.         var End[3];End:={No};
  388.         type({MTE\n});
  389.         loop    ({%IDmail @head(IDbak,{,});
  390.         case    (IDmail<>{},
  391.             {Yes},{footnote(IDmail|{へメールを送ります})});
  392.             wait    (3,{im({Yes})},
  393.                 {タイトル},{WaitMK;type(title|{\n});im({No})},
  394.                 {IDは?}
  395.                 ,{
  396.                 case    (IDmail<>{},
  397.                     {Yes},
  398.                     {type(IDmail|{\n});
  399.                     IDbak:=@body(IDbak,{,});im({Yes})},
  400.                     {No},
  401.                     {
  402.                     case    (End,
  403.                         {No},{type({0\n});End:={Yes};
  404.                             im({Yes})},
  405.                         {Yes},{im({Yes})
  406.                         });
  407.                     });
  408.                 })
  409.             });
  410.         wait(Wtime2,,
  411.         {[Y]},{type({Y|N\n});footnote({メール送信中});
  412.             wait(Wtime2,,{60},{});
  413.             case(text,{},,,{send(text)});
  414.             type({\n//\n});
  415.             PROwait2},
  416.         {IDの指定が}
  417.             ,{wait    (Wtime2,,
  418.                 {Q:Quit},{type({Q\n})},
  419.                 {quit},{type({0|0|Q\n})}
  420.                 );
  421.             wait(3)},
  422.         {Q:Quit},{type({Q\n})},
  423.         {quit},{type({\n})})
  424.         };
  425.     IDbak:=@im(sendto|{,});
  426.     case    (@getchar(ID,1,3),
  427.         {DIG},{MUP2},
  428.         ,{
  429.         loop    ({
  430.             MUP1(@head(IDbak,{,}));
  431.             IDbak:=@body(IDbak,{,});
  432.             case    (IDbak={},    
  433.                 {Yes},{im({No})},
  434.                 {No},{im({Yes})}
  435.                 );
  436.             });
  437.         });
  438.     };
  439. /*    バイナリメールをアップする    */
  440. /*バイナリメールをアップする前処理*/
  441. %BMAILup{
  442.     [sendto,BmalCm,title,docfile,file]
  443.     case    (sendto<>{} && @filechk(file),
  444.         {No},{SKIP},
  445.         {Yes},
  446.         {WaitMK;type(BINop|{\n});type({\n});
  447.         loop    ({
  448.             wait(5,{type({\n});im({Yes})},
  449.             {[36mMAIL},{WaitMK;type({B\n});
  450.                 preBMUP(sendto,BmalCm,title,docfile,file)},
  451.             {\nMAIL},{WaitMK;type({B\n});
  452.                 preBMUP(sendto,BmalCm,title,docfile,file)},
  453.             {BMAIL},{WaitMK;type({U\n});
  454.                 preBMUP(sendto,BmalCm,title,docfile,file)},
  455.             {BINMAIL},{WaitMK;type({U\n});
  456.                 preBMUP(sendto,BmalCm,title,docfile,file)},
  457.             {BINARYMAIL},{WaitMK;type({E\n});
  458.                 preBMUP(sendto,BmalCm,title,docfile,file)});
  459.             });
  460.         });
  461.     };
  462. /*ネットのコメント判定とファイル名と送付先IDの処理*/
  463. %preBMUP{[sendto,BmalCm,title,docfile,file]
  464.     var    ComtB[40];ComtB:=BmalCm;
  465.     case    (DEBUG,{Yes},
  466.         {display({file=}|file|{です\n});
  467.         });
  468.     var    End[3];End:={No};
  469.     Bmailmode:={Yes};    /* ファイルボードへのアップとの処理を区別 */
  470.     IDbak:=@im(sendto|{,});
  471.     loop    ({%IDbmail @head(IDbak,{,});
  472.     case    (IDbmail<>{},
  473.         {Yes},{footnote(IDbmail|{へBメールを送ります})});
  474.         wait    (3,{im({Yes})},
  475.             {タイトル},
  476.             {type(title);type({\n});
  477.             wait(Wtime2,{type({\n})},{[Y]},{type({\n});});
  478.             wait(Wtime2,{type({N\n})},{?,0},{type({N\n})});
  479.             wait(Wtime2,,{60},{});
  480.             case    (@filechk(docfile),
  481.                 {No},
  482.                 {type({バイナリーメール}|title|{を送付します});
  483.                 type({\n//\n})},
  484.                 {Yes},
  485.                 {CHeck:={No};
  486.                 type({Y|N\n});
  487.                 wait(Wtime2,{AbortOff({ホストがおもいよ~\n})}
  488.                 ,{1},{},{2},{}
  489.                 ,{60},{});
  490.                 case    (docfile,{},,,{send(docfile)});
  491.                 type({\n//\n});
  492.                 });
  493.             wait    (3,{type({0\n})},{?,0},{type({0\n})});
  494.             im({Yes})
  495.             },
  496.             {ファイル名}
  497.             ,{WaitMK;type(title);type({\n});
  498.             wait    (3,,
  499.                 {Comment},{type( ComtB|{\n});ComtB:={}},
  500.                 {ID},
  501.                 {type(IDbmail|{\n});
  502.                 IDbak:=@body(IDbak,{,});
  503.                 wait(3,,{タイトル},{type(ComtB|{\n})});
  504.                 wait(Wtime2,{type({\n})},{[Y]},{type({\n})});
  505.                 });
  506.             im({No})},
  507.             {ID}
  508.             ,{
  509.             case    (IDbmail<>{},
  510.                 {Yes},
  511.                 {wait(3,,{ID},);type(IDbmail|{\n});
  512.                 IDbak:=@body(IDbak,{,});
  513.                 im({Yes})},
  514.                 {No},
  515.                 {
  516.                 case    (End,
  517.                     {No},{type({0\n});End:={Yes};im({Yes})},
  518.                     {Yes},{im({Yes})
  519.                     });
  520.                 });
  521.             })
  522.         });
  523.     loop    ({
  524.         wait(3,{type({\n});im({Yes})},
  525.         {ファイルの説明を},{im({Yes})},
  526.         {Comment},
  527.         {case    (ComtB={},
  528.             {Yes},{wait    (3,,{Comment},{type(ComtB|{\n})})
  529.             });
  530.         im({Yes})},
  531.         {UPLOAD}
  532.         ,{WaitMK;type(binop|{\n});sento(docfile,file);im({Yes})},
  533.         {Protocol}
  534.         ,{WaitMK;type(binop|{\n});sento(docfile,file);im({Yes})},
  535.         {Q:Quit},{type({Q\n});im({Yes})},
  536.         {0:quit},{type({0\n});im({Yes})},
  537.         {,?,0},{type({0\n});im({Yes})},
  538.         {,?,P,0},{type({0\n});im({Yes})},
  539.         {既に存在},{WaitMK;otto;im({Yes})},
  540.         {ヘルプ 表示},{im({No})},
  541.         {してねっ☆},{im({No})},
  542.         {MAIN},{im({No})});
  543.         });
  544.     };
  545.  
  546. /*    プロフィール情報をアップする    */
  547. %PROFup{[text]
  548.     footnote(ID|{のプロフィール情報を登録します});type({P|W|N\n});
  549.     wait(Wtime2,{AbortOff({\nホストがおもいよ~\n})},{60},{});
  550.     case(text,{},,,{send(text)});type({\n//\n});
  551.     PROwait2;
  552.     };
  553. /*    メモ書き込み情報をアップする    */
  554. %MEMOup{[text] 
  555.     footnote({メモ書き込み情報に}|@read(text)|{を登録します});wait(2);
  556.     type({\\\n});
  557.     wait(Wtime2,{type(@read(text))}
  558.         ,{ください},{WaitMK;type(@read(text))}
  559.         ,{[RET]},{WaitMK;type(@read(text))});type({\n});wait(2)
  560.     };
  561. /*アップレート計算処理*/
  562. %RTuptime{[datafile]
  563.     %timePS    @linetime-timeP-2;
  564.     %rate    Fsize/timePS;
  565.     %date    @getdt;
  566.     display({\n}|Fsize|{バイトアップするのに}|timePS|
  567.         {秒くらいかかりました。約}|rate|{byte/sec。\n});
  568.     case    (@filechk(LOG2|{アクセスdat\upldrate.dat}),
  569.         {No},
  570.         {write(LOG2|{アクセスdat\upldrate.dat},
  571.             {日付     時刻  ファイル名   サイズ}|
  572.             {  時間 byte/sec 通信速度 電話番号\n})}
  573.                     );
  574.         %name @SPP(@body(@tail(datafile,{\}),,{.}),8,1)|{.}|
  575.             @tail(@tail(datafile,{\}),{.});
  576.         write(LOG2|{アクセスdat\upldrate.dat},
  577.             @getchar(date,3,8)|{ }|
  578.             @getchar(date,17,5)|{ }|
  579.             name|
  580.             @SPP(Fsize,7,)|@SPP(timePS,5,)|{秒}|
  581.             @SPP(rate,4,)|{  }|
  582.             @SPP(@tail(sROAD,{/}),6,)|{bps }|
  583.             @head(sROAD,{/})|{\n});
  584.         SNDMSG({owata_f.snd});
  585.     };
  586. /* エラー処理 */
  587. %otto2 {SNDMSG({okasi_f.snd});wait(2);
  588.     write(UP2|{doraup.rsv},{保留;}|linebuf);
  589.     display({\n☆ファイル名に日本語が入っているとホストが受け付け}|
  590.         {てくれないorこのファイルは既に存在している}|
  591.         {様です、次の処理を行います\n});type({\n});
  592.     };
  593. %otto    {SNDMSG({okasi_f.snd});wait(2);
  594.     write(UP2|{doraup.rsv},{保留;}|linebuf);
  595.     display({\n☆ライブラリ番号が違う or ファイル名が重複して}|
  596.         {いる or ファイル名に日本語が入っているとホストが}|
  597.         {受け付けてくれない の為、次の処理を行います\n});
  598.     loop    ({
  599.         wait(3,{type({\n});im({Yes})},
  600.         {0:quit},{type({0\n});im({Yes})},
  601.         {,?,0},{type({0\n});im({Yes})},
  602.         {Q:Quit},{type({Q\n});im({Yes})},
  603.         {,Q},{type({Q\n});im({Yes})},
  604.         {ヘルプ 表示},{im({No})},
  605.         {してねっ☆},{im({No})},
  606.         {MAIN},{im({No})})
  607.         })
  608.     };
  609. /*    データライブラリとBメールをアップ    */
  610. %sentoY{var N[1];N:=0;
  611.     loop    ({
  612.         case    (N,
  613.             {1},{type({\n});type({\n})},
  614.             {2},{type({\n});type({\n});display({変だぞ\n})},
  615.             {3},{type(CTRX|CTRX|{\n});display({送信失敗かな\n})},
  616.             {4},{type(CTRX|CTRX|{\n})},
  617.             {5},{type(CTRX|CTRX|{\n})},
  618.             {8},{AbortOff({\nホストの反応が無いよ~\n})});
  619.         wait    (7,{N:=N+1;type({\n});im({Yes})}
  620.             ,{に失敗},
  621.             {footnote({m(_._)m ペコリ>ユーザー様});im({No});
  622.             write(UP2|{doraup.rsv},{保留;}|linebuf);type({\n})}
  623.             ,{に成功},
  624.             {footnote({アップロードを終了しました。});
  625.             RTuptime(datafile);im({No})}
  626.             ,{しました},
  627.             {footnote({アップロードを終了しました。});
  628.             RTuptime(datafile);im({No})}
  629.             ,{ファイル},
  630.             {footnote({アップロードを終了しました。});
  631.             RTuptime(datafile);im({No})}
  632.             ,{?,0},
  633.             {footnote({アップロードを終了しました。});
  634.             RTuptime(datafile);type({\n});im({No})}
  635.             ,{MAIL},
  636.             {footnote({アップロードを終了しました。});
  637.             RTuptime(datafile);type({\n});im({No})}
  638.             ,{FILE},
  639.             {footnote({アップロードを終了しました。});
  640.             RTuptime(datafile);im({No})})
  641.         });
  642.     loop    ({
  643.         wait    (10,{type({\n});im({Yes})},
  644.             {補足説明を},{DocFile;im({Yes})},
  645.             {0:quit},{WaitMK;type({0\n});im({Yes})},
  646.             {W:write},{WaitMK;type({W\n});im({Yes})},
  647.             {,0},{wait(2);type({0|Q\n});im({No})}
  648.             );
  649.         });preRetM
  650.     };
  651. %sento{[docfile,datafile]
  652.     %size    @case    (@filechk(datafile),
  653.             {Yes},{im(@fileleng(datafile))},
  654.             {No},{im(0)});
  655.     %Fsize @SPP(size,7,);
  656.     var timeP[10];
  657.     timeP:=@linetime;
  658.     case    (Bmailmode={Yes},
  659.         {Yes},{},
  660.         {No},{wait(3,,
  661.             {で止める},{},{で中断},{})
  662.         });
  663.         wait(WtimeU);    /* ホストが受信準備出来るまで待つ */
  664.     SENDbin(datafile);sentoY;
  665.     };
  666. %DocFile{
  667.     case    (@filechk(docfile),
  668.         {Yes},
  669.         {CHeck:={No};
  670.         type({Y|N\n});
  671.         wait(Wtime2,{AbortOff({ホストがおもいよ~\n})},{60},{});
  672.         case    (docfile,{},,,{send(docfile)});
  673.         type({\n//\n});
  674.         loop    ({
  675.             wait    (3,{im({Yes})},
  676.                 {quit},{WaitMK;type({W\n});im({No})},
  677.                 {,?,0},{WaitMK;type({0|W\n});im({No})},
  678.                 {/N) >},{type({N|0|W\n});im({No})})
  679.             });
  680.         },
  681.         {No},{type({N\n})}
  682.         );
  683.     };
  684. %LIBup1{[forumlib,libno,dataname,keyword,datatype,docfile,datafile]
  685.     var timeP[10];
  686.     Bmailmode:={No};    /* ファイルボードへのアップとの処理を区別 */
  687.     /* アップスルDATAの説明文を書込む処理 */
  688.     %KMF94    {
  689.         case    (@filechk(docfile),
  690.             {Yes},
  691.             {CHeck:={No};WaitMK;type({N\n});
  692.             wait(Wtime2,{AbortOff({ホストがおもいよ~\n})},{60},{});
  693.             case    (docfile,{},,,{send(docfile)});
  694.             type({\n//\n});
  695.             loop    ({
  696.                 wait    (3,{im({Yes})},
  697.                     {quit},{WaitMK;type({W\n});im({No})},
  698.                     {,?,0},{WaitMK;type({0|W\n});im({No})},
  699.                     {/N) >},{type({N|0|W\n});im({No})})
  700.                 });
  701.             },
  702.             {No},{type({0|0|N\n});
  703.             wait(Wtime2,{type({0\n})},{0:quit},{type({W\n})});}
  704.             );
  705.         wait    (Wtime2,,
  706.             {Protocol},
  707.             {WaitMK;
  708.             case    (datatype,
  709.                 {TXT},
  710.                 {type({T|N\n});
  711.                 wait(Wtime2,{AbortOff({ホストがおもいよ~\n})},
  712.                 {60},{});
  713.                 case    (datafile,{},,,{send(datafile)});
  714.                 type({\n//\n});PROwait2
  715.                 },
  716.             ,{type(binop|{\n});sento(docfile,datafile)})
  717.             });
  718.         };
  719.     %TYPEyn{
  720.         DocFile;
  721.         wait    (Wtime2,,
  722.             {Protocol},
  723.             {WaitMK;
  724.             case    (datatype,
  725.                 {TXT},
  726.                 {type({T|N\n});
  727.                 wait(Wtime2,{AbortOff({ホストがおもいよ~\n})},
  728.                 {60},{});
  729.                 case    (datafile,{},,,{send(datafile)});
  730.                 type({\n//\n});PROwait2
  731.                 },
  732.             ,{type(binop|{\n});sento(docfile,datafile)})
  733.             });
  734.         };
  735.  
  736.     /* 公開ボード と CUGボードとの区別 */
  737.     %TYPEname{
  738.         case    (forumlib=NET,
  739.             {Yes},{type({F#}|libno|{|U|}|dataname|{|}
  740.                     |keyword|{\n})},
  741.             {No},{type({F#}|libno|{|}|forumlib|{|U|}|dataname|
  742.                     {|}|keyword|{\n})}
  743.             );
  744.         };
  745.  
  746.     type({\n});
  747.     wait(Wtime2,{AbortOff({ホストの反応が鈍いよぉ~\n})}
  748.         ,{>},{TYPEname}
  749.         ,{,?,},{TYPEname});
  750.     wait(Wtime2,
  751.         ,{/N) >},{TYPEyn}
  752.         ,{[N]},{TYPEyn}
  753.         ,{Protocol},
  754.         {WaitMK;
  755.         case    (datatype,
  756.             {TXT},
  757.             {type({T|N\n});
  758.             wait(Wtime2,{AbortOff({ホストがおもいよ~\n})},{60},{});
  759.             case    (datafile,{},,,{send(datafile)});
  760.                 type({\n//\n});PROwait2},
  761.             ,{WaitMK;type(binop|{\n});sento(docfile,datafile)})
  762.         }
  763.         ,{ラインエディタを起動しました},{KMF94}
  764.         ,{ファイル名を入力して},{otto}
  765.         ,{そのファイルは既に存在},{otto}
  766.         ,{ボードが見つか},{otto}
  767.         ,{ボードの指定が違},{otto}
  768.         ,{パスワードが違},{otto})
  769.     };
  770. %DLIBup{[forumlib,libno,dataname,keyword,datatype,docfile,datafile]
  771.     case    (forumlib<>{} && dataname<>{} && keyword<>{}
  772.             && datatype<>{} && @filechk(datafile),
  773.         {Yes},
  774.         {footnote(forumlib|{の}|libno|
  775.             {番ライブラリにアップロードします});
  776.         LIBup1(forumlib,libno,dataname,
  777.             keyword,datatype,docfile,datafile)
  778.         },
  779.         {No},
  780.         {display({必要なデータが揃っていないため}|
  781.                         {次の処理へスキップします\n});
  782.         write(UP2|{doraup.rsv},{保留;}|linebuf);
  783.         })
  784.     };
  785. var Bmailmode[3];
  786. var line[3];
  787. var linebuf[258];
  788. var IDbak[500];    /* 爆裂トーク & メールup未処理IDリスト    */
  789. DOWNSTOP;AUTOUPLD;DOWNSTART;